.\" Copyright 2021, Colin Cross <ccross@google.com>
.\" Copyright 2023, Nick Gregory <nick@nickgregory.me>
.\" Copyright 2024, Alejandro Colomar <alx@kernel.org>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.TH PR_SET_VMA 2const 2024-06-15 "Linux man-pages 6.9.1"
.SH NAME
PR_SET_VMA
\-
set an attribute for virtual memory areas
.SH LIBRARY
Standard C library
.RI ( libc ", " \-lc )
.SH SYNOPSIS
.nf
.BR "#include <linux/prctl.h>" "  /* Definition of " PR_* " constants */"
.B #include <sys/prctl.h>
.P
.BI "int prctl(PR_SET_VMA, long " attr ", unsigned long " addr \
", unsigned long " size ,
.BI "          const char *_Nullable " val );
.fi
.SH DESCRIPTION
Sets an attribute specified in
.I attr
for virtual memory areas starting from the address specified in
.I addr
and spanning the size specified in
.IR size .
.I val
specifies the value of the attribute to be set.
.P
Note that assigning an attribute to a virtual memory area
might prevent it from being merged with adjacent virtual memory areas
due to the difference in that attribute's value.
.P
Currently,
.I attr
must be one of:
.TP
.B PR_SET_VMA_ANON_NAME
Set a name for anonymous virtual memory areas.
.I val
should be a pointer to a null-terminated string containing the name.
The name length including null byte cannot exceed 80 bytes.
If
.I val
is NULL, the name of the appropriate anonymous virtual memory areas
will be reset.
The name can contain only printable ascii characters
.RB ( isprint (3)),
except
.BR \[aq][\[aq] ,
.BR \[aq]]\[aq] ,
.BR \[aq]\[rs]\[aq] ,
.BR \[aq]$\[aq] ,
and
.BR \[aq]\[ga]\[aq] .
.SH RETURN VALUE
On success,
0 is returned.
On error, \-1 is returned, and
.I errno
is set to indicate the error.
.SH ERRORS
.TP
.B EINVAL
.I attr
is not a valid attribute.
.TP
.B EINVAL
.I addr
is an invalid address.
.SH STANDARDS
Linux.
.SH HISTORY
Linux 5.17.
.\" Commit 9a10064f5625d5572c3626c1516e0bebc6c9fe9b
.SH SEE ALSO
.BR prctl (2)
